# 基础运算符

# 算术运算符
# 除
print(10 / 3)  # 保留小数
print(10 // 3)  # 只保留整数

# 次方
print(10 ** 3)  # 10的3次方

# 交叉赋值
n = 10
m = 20
n, m = m, n  # 交换值
print("n={},m={}".format(n, m))

# 解压赋值
l = [1, 2, 3, 4]
a, b, c, d = l
print("a={},b={},c={},d={}".format(a, b, c, d))
# *会自动把剩下的值存为列表，_在python中约定俗成是废弃的变量，不再使用
# 只去开头2个值
a, b, *_ = l
print("a={},b={}".format(a, b))
# 只去结尾2个值
*_, a, b = l
print("a={},b={}".format(a, b))

# 逻辑运算符
# not: 逻辑非 把紧跟其后的那个条件取反
print(not True)  # 输出 False
print(not False)  # 输出 True
print(not 10)  # 输出 False
print(not 0)  # 输出 True
print(not None)  # 输出 True
print(not '')  # 输出 True

# and： 逻辑与 and连接左右两个条件，同真为真，一假则假
print(True and True)  # 输出 True
print(True and False)  # 输出 False
print(3 > 2 and 4 > 5)  # 输出 False

# or：逻辑或 or连接左右两个添加，一真则真，同假为假
print(True or False)  # 输出 True
print(True or True)  # 输出 True
print(False or False)  # 输出 False
print(3 > 2 or 4 > 5)  # 输出 True

# 成员运算符
# in：判断子字符串、元素、key是否存在与字符串、列表或字典中
print("a" in "abc")  # 输出 True
print("a" in "bcd")  # 输出 False
print(1 in [1, 2, 3])  # 输出 True
print(1 in [4, 2, 3])  # 输出 False
print("a" in {"a": 1, "b": 2})  # 输出 True
print("a" in {"b": 1, "c": 2})  # 输出 False

# not in: 判断子字符串、元素、key是否存在与字符串、列表或字典中，再取反 （推荐使用in）
print("a" not in "abc")  # 输出 False
print(not"a" in "abc")  # 输出 False

# 身份运算符
# * is 判断id是否相等
# * == 判断值是否相等
